/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package com.plian.system.service.im;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.plian.system.dto.im.FundProjectInfoDTO;
import com.plian.system.entity.im.FundProjectExecution;
import com.plian.system.model.R;
import com.plian.system.mybatis.base.BaseService;
import com.plian.system.vo.im.FundProjectExecutionVO;
import com.plian.system.vo.im.FundProjectVO;

import java.util.List;

/**
 * 基金项目投资计划执行
 服务类
 *
 * @author BladeX
 * @since 2022-04-15
 */
public interface IFundProjectExecutionService extends BaseService<FundProjectExecution> {

	/**
	 * 自定义分页
	 *
	 * @param page
	 * @param fundProjectExecution
	 * @return
	 */
	IPage<FundProjectExecutionVO> selectFundProjectExecutionPage(IPage<FundProjectExecutionVO> page, FundProjectExecutionVO fundProjectExecution);


	String checkMonth(FundProjectExecution fundProjectExecution);

	boolean submit(FundProjectExecution fundProjectExecution);

	/**
	 * 获取detail obj对象
	 * @param fundProjectExecutionVO
	 * @return
	 */
	R<FundProjectExecutionVO> getDetailObj(FundProjectExecutionVO fundProjectExecutionVO);

//	/** TODO DEL
//	 * @Author: Take-off
//	 * @Description: //TODO 更新基金信息
//	 * @Date: 9:56 AM 2023/2/8
//	 * @Param: [fundProjectExecution]
//	 * @return: void
//	 **/
//	void updateProject(FundProjectExecution fundProjectExecution);

	/**
	 * 基金项目投资计划执行明细列表
	 * @param fundProjectExecutionVOS
	 * @return
	 */
	List<FundProjectVO> executionListDetail(List<FundProjectExecutionVO> fundProjectExecutionVOS, FundProjectInfoDTO fundProjectInfoDTO);

	/**
	 * 获取对应单位月份的基金项目情况列表
	 * @param month
	 * @param fillingUnitId
	 * @return
	 */
	List<FundProjectVO> getFundProjectListByOrgAndMonth(String month,String fillingUnitId);

	/**
	 * 根据项目信息刷新 gp lp detail
	 */
	void refreshDetailData();

    String saveFundProjectExecution(String data);
}
